package com.test.design.pattern.factory.static_factory;



/**
 * @ClasName CoffeeStore
 * @Descripution TODO
 * @Author leikw
 * @Date 2021/11/6 16:56
 * @Version V1.0
 */
public class CoffeeStore {

    public Coffee orderCoffee(String type) {
        //声明Coffee类型的变量，根据不同类型创建不同的coffee子类对象
        Coffee coffee = SimpleCoffeeFactory.createCoffee(type);
        //加配料
        coffee.addMilk();
        coffee.addsugar();

        return coffee;
    }

//    在java中，万物皆对象，这些对象都需要创建，如果创建的时候直接new该对象，就会对该对象耦合严
//重，假如我们要更换对象，所有new对象的地方都需要修改一遍，这显然违背了软件设计的开闭原则。

//如果我们使用工厂来生产对象，我们就只和工厂打交道就可以了，彻底和对象解耦，如果要更换对象，
//直接在工厂里更换该对象即可，达到了与对象解耦的目的；所以说，工厂模式最大的优点就是：解耦。





//优点：
//封装了创建对象的过程，可以通过参数直接获取对象。把对象的创建和业务逻辑层分开，这样以后就避
//免了修改客户代码，如果要实现新产品直接修改工厂类，而不需要在原代码中修改，这样就降低了客户
//代码修改的可能性，更加容易扩展。
//缺点：
//增加新产品时还是需要修改工厂类的代码，违背了“开闭原则”。
}
